import  magic

class FileTypeChecker:
    def __init__(self):
        # 创建一个 magic 对象，用于检测 MIME 类型
        self.mime = magic.Magic(mime=True)
    def get_file_type(self, file_object):
        """
        获取文件的 MIME 类型
        :param file_object: 文件对象（如 SpooledTemporaryFile）
        :return: 文件的 MIME 类型（如 "image/png"）
        """
        # 将文件指针移动到开头
        file_object.seek(0)
        # 读取文件内容
        file_content = file_object.read()
        # 使用 magic 对象检测文件类型
        file_type = self.mime.from_buffer(file_content)
        # 将文件指针重置到开头
        # file_object.seek(0)
        return file_type

    def is_image(self, file_object):
        """
        判断文件是否为图片
        :param file_object: 文件对象
        :return: True 是图片，False 不是图片
        """
        file_type = self.get_file_type(file_object)
        return file_type.startswith("image/")

    def is_video(self, file_object):
        """
        判断文件是否为视频
        :param file_object: 文件对象
        :return: True 是视频，False 不是视频
        """
        file_type = self.get_file_type(file_object)
        return file_type.startswith("video/")

    def is_audio(self, file_object):
        """
        判断文件是否为音频
        :param file_object: 文件对象
        :return: True 是音频，False 不是音频
        """
        file_type = self.get_file_type(file_object)
        return file_type.startswith("audio/")

    def is_pdf(self, file_object):
        """
        判断文件是否为 PDF
        :param file_object: 文件对象
        :return: True 是 PDF，False 不是 PDF
        """
        file_type = self.get_file_type(file_object)
        return file_type == "application/pdf"

    def is_text(self, file_object):
        """
        判断文件是否为文本文件
        :param file_object: 文件对象
        :return: True 是文本文件，False 不是文本文件
        """
        file_type = self.get_file_type(file_object)
        return file_type.startswith("text/")

if __name__ == '__main__':
    pass